package com.xy6.struct.holiday;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

import org.joda.time.DateTime;

/**
 * 计算居民用户节假日外出天数
 * <pre>
 * 估算将所有数据load到内存中，占用内存大小
 * </pre>
 * 
 * @author zhang
 * @since 2018-02-06
 */
public class Test1 {

	private static Random r = new Random();
	
	public static void main(String[] args) {
		// 1.7G
		int beginNo = 1000000;
		int endNo = 3500000;
		int size = endNo - beginNo + 1;
		List<Xx> xxs = new ArrayList<>(size);
		List<Zd> zds = new ArrayList<>(size);
		Xx xx = null;
		Zd zd = null;
		String yhbh = null;
		for(int i=beginNo; i<=endNo; i++){
			yhbh = String.valueOf(i);
			xx = new Xx();
			xx.setYhbh(yhbh);
			xx.setNpjrdl(r.nextFloat() * 30);
			xxs.add(xx);
			
			zd = new Zd();
			zd.setYhbh(yhbh);
			zd.setSfjc(i % 2 == 0 ? 1 : 0);
			zd.setYf1(r.nextFloat() * 1500);
			zd.setYf2(r.nextFloat() * 1500);
			zd.setYf3(r.nextFloat() * 1500);
			zd.setYf4(r.nextFloat() * 1500);
			zd.setYf5(r.nextFloat() * 1500);
			zd.setYf6(r.nextFloat() * 1500);
			zd.setYf7(r.nextFloat() * 1500);
			zd.setYf8(r.nextFloat() * 1500);
			zd.setYf9(r.nextFloat() * 1500);
			zd.setYf10(r.nextFloat() * 1500);
			zd.setYf11(r.nextFloat() * 1500);
			zd.setYf12(r.nextFloat() * 1500);
			zds.add(zd);
		}
		List<Date> holidays = new ArrayList<>(116);
		DateTime dt = new DateTime(2017,1,1,0,0,0);
		for (int i = 0; i < 116; i++) {
			holidays.add(dt.plusDays(i).toDate());
		}
		List<Rdl> rdls = new ArrayList<>(size * 116);
		Rdl rdl = null;
		for(int i=beginNo; i<=endNo; i++){
			yhbh = String.valueOf(i);
			rdl = new Rdl();
			rdl.setYhbh(yhbh);
			for (Date d : holidays) {
				rdl.setRq(d);
				rdl.setRdl(r.nextFloat() * 50);
				rdls.add(rdl);
			}
		}
		
		xx = null;
		zd = null;
		yhbh = null;
		rdl = null;
		dt = null;
		
		System.out.println(xxs.size());
		System.out.println(zds.size());
		System.out.println(rdls.size());
	}

}
